package com.lq.learningTest.encapsulation;

public class Queue {
    private SuperLink superLink = new SuperLink();
    /**
     * 入队的方法,超级链表的尾插法
     * @param item
     * @return
     */
    public boolean add(Integer item){
        if (superLink.add(item)) {
            return true;
        }
        return false;
    }

    /**
     * 出队的方法，也就是链表删除节点,从首结点开始
     * @return
     */
    public Integer poll(){
        if(empty()){
            return null;
        }
        Integer key = superLink.get(1);
        if (key != null) {
            superLink.remove();
        }else return null;
        return key;
    }

    /**
     * 返回队首，不出队
     * @return
     */
    public Integer peekHead(){
        if(empty()){
            return null;
        }
        return superLink.get(1);
    }

    /**
     * 返回队尾
     * @return
     */
    public Integer peekTail(){
        if (empty()) {
            return null;
        }
        return superLink.get(superLink.size());
    }

    /**
     * 根据传入的序号得到数值
     * @param index
     * @return
     */
    public Integer getIndex(Integer index){
        return superLink.get(index);
    }

    /**
     * 获取队列大小
     * @return
     */
    public int size(){
        return superLink.size();
    }

    /**
     * 判断这个队列是否为空
     * @return
     */
    public boolean empty(){
        return size() == 0;
    }
}



